package com.ywy.core.base;

import com.ywy.core.vo.PageResultVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 基本Service接口
 */
public interface BaseService<T extends BaseEntity, P extends BaseParam> {
    /**
     * 根据id获取对象
     */
    T getById(String id);

    /**
     * 根据参数查询集合
     */
    List<T> findListByParam(@Param("param") P p);

    /**
     * 根据参数分页查询集合
     */
    PageResultVO<T> findListByPage(@Param("param") P p);

    /**
     * 根据参数查询数量
     */
    int findCountByParam(@Param("param") P p);

    /**
     * 新增
     */
    int save(@Param("bean") T t);

    /**
     * 批量新增
     */
    int saveBatch(@Param("list") List<T> list);

    /**
     * 根据id更新
     */
    int updateById(@Param("bean") T t, @Param("id") String id);

    /**
     * 多条件更新
     */
    int updateByParam(@Param("bean") T t, @Param("param") P p);

    /**
     * 根据id删除
     */
    int deleteById(String id);

    /**
     * 多条件删除
     */
    int deleteByParam(@Param("param") P p);
}
